package com.hnas.core.util;

import java.util.Random;


/**
 * @author Tan Tailiang
 * 创建日期：2006-4-21
 * 类说明：<p>数学计算操作类</p>
 */
public class MathUtil {

    /**
     * 
     * 方法说明：<p>获得随机数</p>
     * 创建日期：2006-4-21
     * 创建人： Tan Nailiang
     * @return
     */
	public static long getRandomNumber(){
		return System.currentTimeMillis();
	}
	/**
	 * 
	 * 方法说明：<p>计算舱位价格，精确到10位，个位采取四舍五入</p>
	 * 创建日期：2006-4-21
	 * 创建人： Tan Nailiang
	 * @param orginalPrice
	 * @param discount
	 * @return
	 */
	public static int calcCabinPrice(double orginalPrice, double discount) {
		return (int) Math.floor((orginalPrice * discount / 10 )+0.501d) * 10;
	}
	
	/**
	 * 
	 * 方法说明：<p></p>
	 * 创建日期：2006-4-21
	 * 创建人： Tan Nailiang
	 * @param orginalPrice
	 * @param discount
	 * @return
	 */
	public static int calcItemPrice(double orginalPrice, double discount) {
	    return (int) Math.round(orginalPrice * discount);
	}
	
	/**
	 * 
	 * 方法说明：<p>保留小数点位数</p>
	 * 创建日期：2006-4-21
	 * 创建人： chjun
	 * @param orginalNum
	 * @param point 小数点位数
	 * @return
	 */
	public static double calcMathOperation(double orginalNum,int point ){
		
		double tempD = orginalNum * Math.pow(10.0, point);
		orginalNum = (Math.round(tempD)) / (Math.pow(10.0, point));
	    return orginalNum;
	}
	 /**
	  * java生成随机数字和字母组合
	  * @param length[生成随机数的长度]
	  * @return
	  */
	 public static String getCharAndNumr(int length) {
	  String val = "";
	  Random random = new Random();
	  for (int i = 0; i < length; i++) {
	   // 输出字母还是数字
	   String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; 
	   // 字符串
	   if ("char".equalsIgnoreCase(charOrNum)) {
	    // 取得大写字母还是小写字母
	    int choice = random.nextInt(2) % 2 == 0 ? 65 : 97; 
	    val += (char) (choice + random.nextInt(26));
	   } else if ("num".equalsIgnoreCase(charOrNum)) { // 数字
	    val += String.valueOf(random.nextInt(10));
	   }
	  }
	  return val;
	 }

	public static void main(String args[]) {
		  System.out.println("生成的10为随机数为：" + getCharAndNumr(323).toUpperCase());
		System.out.println("result:"+MathUtil.calcMathOperation(1395.887, 2));
	}
}
